package com.partsoft.dits;

/**
 * 描述符管理器
 * @param <E> 必须实现{@link EdgeDescriptor}接口
 */
public interface DescriptorManager<E extends EdgeDescriptor> extends DescriptorRegistry<E> {
	
	/**
	 * 是否有指定的描述符
	 * @param descritpor 指定的描述符
	 * @return 有则返回true,否则返回false
	 */
	boolean hasDescriptor(E descriptor);
	
	/**
	 * 添加一个描述符
	 * @param descriptor 指定的描述符
	 * @return 添加后的描述符
	 * @exception RuntimeException 如果存在相同的描述符，则抛出异常。
	 */
	E addDescriptor(E descriptor) throws RuntimeException;
	
	/**
	 * 移除描述符
	 * @param descriptor 指定的描述符
	 * @return 如果成功移除则返回true， 否则返回false
	 */
	E removeDescriptor(E descriptor);
	
	/**
	 * 编辑描述符
	 * @param descriptor 需要保存的描述符
	 * @return 返回修改后的描述符。
	 */
	E modifyDescriptor(E descriptor);
	
}
